home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / ws2spi.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  18.1 KB  |  964 lines

  1. /* WS2SPI.H -- definitions to be used with the WinSock service provider.
  2.  *
  3.  * This header file corresponds to version 2.2.x of the WinSock SPI
  4.  * specification.
  5.  *
  6.  * This file includes parts which are Copyright (c) 1982-1986 Regents
  7.  * of the University of California.  All rights reserved.  The
  8.  * Berkeley Software License Agreement specifies the terms and
  9.  * conditions for redistribution.
  10.  */
  11.  
  12. #ifndef _WINSOCK2SPI_
  13. #define _WINSOCK2SPI_
  14. #pragma option push -b
  15.  
  16.  
  17. /*
  18.  * Ensure structures are packed consistently.
  19.  */
  20.  
  21.  
  22. #include <pshpack4.h>
  23.  
  24.  
  25. /*
  26.  * Pull in WINSOCK2.H if necessary
  27.  */
  28.  
  29. #ifndef _WINSOCK2API_
  30.  
  31. #include <winsock2.h>
  32.  
  33. #endif /* _WINSOCK2API_ */
  34.  
  35. #define WSPDESCRIPTION_LEN 255
  36.  
  37. typedef struct WSPData {
  38.     WORD         wVersion;
  39.     WORD         wHighVersion;
  40.     WCHAR        szDescription[WSPDESCRIPTION_LEN+1];
  41. } WSPDATA, FAR * LPWSPDATA;
  42.  
  43. typedef struct _WSATHREADID {
  44.     HANDLE ThreadHandle;
  45.     DWORD Reserved;
  46. } WSATHREADID, FAR * LPWSATHREADID;
  47.  
  48. /*
  49.  * SPI function linkage.
  50.  */
  51.  
  52. #define WSPAPI WSAAPI
  53.  
  54.  
  55. #ifdef __cplusplus
  56. extern "C" {
  57. #endif
  58.  
  59. /*
  60.  * Pointer to a blocking callback. A pointer to a blocking callback is
  61.  * returned from the WPUQueryBlockingCallback() upcall. Note that this
  62.  * function's signature is not identical to an application's blocking
  63.  * hook function.
  64.  */
  65.  
  66. typedef
  67. BOOL
  68. (CALLBACK FAR * LPBLOCKINGCALLBACK)(
  69.     DWORD dwContext
  70.     );
  71.  
  72. /*
  73.  * Pointer to a user APC function. This is used as a parameter to the
  74.  * WPUQueueUserApc() upcall. Note that this function's signature is not
  75.  * identical to an application's completion routine.
  76.  */
  77.  
  78. typedef
  79. VOID
  80. (CALLBACK FAR * LPWSAUSERAPC)(
  81.     DWORD dwContext
  82.     );
  83.  
  84. /*
  85.  * Pointers to the individual entries in a service provider's proc table.
  86.  */
  87.  
  88. typedef
  89. SOCKET
  90. (WSPAPI * LPWSPACCEPT)(
  91.     SOCKET s,
  92.     struct sockaddr FAR * addr,
  93.     LPINT addrlen,
  94.     LPCONDITIONPROC lpfnCondition,
  95.     DWORD dwCallbackData,
  96.     LPINT lpErrno
  97.     );
  98.  
  99. typedef
  100. INT
  101. (WSPAPI * LPWSPADDRESSTOSTRING)(
  102.     LPSOCKADDR lpsaAddress,
  103.     DWORD dwAddressLength,
  104.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  105.     LPWSTR lpszAddressString,
  106.     LPDWORD lpdwAddressStringLength,
  107.     LPINT lpErrno
  108.     );
  109.  
  110. typedef
  111. int
  112. (WSPAPI * LPWSPASYNCSELECT)(
  113.     SOCKET s,
  114.     HWND hWnd,
  115.     unsigned int wMsg,
  116.     long lEvent,
  117.     LPINT lpErrno
  118.     );
  119.  
  120. typedef
  121. int
  122. (WSPAPI * LPWSPBIND)(
  123.     SOCKET s,
  124.     const struct sockaddr FAR * name,
  125.     int namelen,
  126.     LPINT lpErrno
  127.     );
  128.  
  129. typedef
  130. int
  131. (WSPAPI * LPWSPCANCELBLOCKINGCALL)(
  132.     LPINT lpErrno
  133.     );
  134.  
  135. typedef
  136. int
  137. (WSPAPI * LPWSPCLEANUP)(
  138.     LPINT lpErrno
  139.     );
  140.  
  141. typedef
  142. int
  143. (WSPAPI * LPWSPCLOSESOCKET)(
  144.     SOCKET s,
  145.     LPINT lpErrno
  146.     );
  147.  
  148. typedef
  149. int
  150. (WSPAPI * LPWSPCONNECT)(
  151.     SOCKET s,
  152.     const struct sockaddr FAR * name,
  153.     int namelen,
  154.     LPWSABUF lpCallerData,
  155.     LPWSABUF lpCalleeData,
  156.     LPQOS lpSQOS,
  157.     LPQOS lpGQOS,
  158.     LPINT lpErrno
  159.     );
  160.  
  161. typedef
  162. int
  163. (WSPAPI * LPWSPDUPLICATESOCKET)(
  164.     SOCKET s,
  165.     DWORD dwProcessId,
  166.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  167.     LPINT lpErrno
  168.     );
  169.  
  170. typedef
  171. int
  172. (WSPAPI * LPWSPENUMNETWORKEVENTS)(
  173.     SOCKET s,
  174.     WSAEVENT hEventObject,
  175.     LPWSANETWORKEVENTS lpNetworkEvents,
  176.     LPINT lpErrno
  177.     );
  178.  
  179. typedef
  180. int
  181. (WSPAPI * LPWSPEVENTSELECT)(
  182.     SOCKET s,
  183.     WSAEVENT hEventObject,
  184.     long lNetworkEvents,
  185.     LPINT lpErrno
  186.     );
  187.  
  188. typedef
  189. BOOL
  190. (WSPAPI * LPWSPGETOVERLAPPEDRESULT)(
  191.     SOCKET s,
  192.     LPWSAOVERLAPPED lpOverlapped,
  193.     LPDWORD lpcbTransfer,
  194.     BOOL fWait,
  195.     LPDWORD lpdwFlags,
  196.     LPINT lpErrno
  197.     );
  198.  
  199. typedef
  200. int
  201. (WSPAPI * LPWSPGETPEERNAME)(
  202.     SOCKET s,
  203.     struct sockaddr FAR * name,
  204.     LPINT namelen,
  205.     LPINT lpErrno
  206.     );
  207.  
  208. typedef
  209. int
  210. (WSPAPI * LPWSPGETSOCKNAME)(
  211.     SOCKET s,
  212.     struct sockaddr FAR * name,
  213.     LPINT namelen,
  214.     LPINT lpErrno
  215.     );
  216.  
  217. typedef
  218. int
  219. (WSPAPI * LPWSPGETSOCKOPT)(
  220.     SOCKET s,
  221.     int level,
  222.     int optname,
  223.     char FAR * optval,
  224.     LPINT optlen,
  225.     LPINT lpErrno
  226.     );
  227.  
  228. typedef
  229. BOOL
  230. (WSPAPI * LPWSPGETQOSBYNAME)(
  231.     SOCKET s,
  232.     LPWSABUF lpQOSName,
  233.     LPQOS lpQOS,
  234.     LPINT lpErrno
  235.     );
  236.  
  237. typedef
  238. int
  239. (WSPAPI * LPWSPIOCTL)(
  240.     SOCKET s,
  241.     DWORD dwIoControlCode,
  242.     LPVOID lpvInBuffer,
  243.     DWORD cbInBuffer,
  244.     LPVOID lpvOutBuffer,
  245.     DWORD cbOutBuffer,
  246.     LPDWORD lpcbBytesReturned,
  247.     LPWSAOVERLAPPED lpOverlapped,
  248.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  249.     LPWSATHREADID lpThreadId,
  250.     LPINT lpErrno
  251.     );
  252.  
  253. typedef
  254. SOCKET
  255. (WSPAPI * LPWSPJOINLEAF)(
  256.     SOCKET s,
  257.     const struct sockaddr FAR * name,
  258.     int namelen,
  259.     LPWSABUF lpCallerData,
  260.     LPWSABUF lpCalleeData,
  261.     LPQOS lpSQOS,
  262.     LPQOS lpGQOS,
  263.     DWORD dwFlags,
  264.     LPINT lpErrno
  265.     );
  266.  
  267. typedef
  268. int
  269. (WSPAPI * LPWSPLISTEN)(
  270.     SOCKET s,
  271.     int backlog,
  272.     LPINT lpErrno
  273.     );
  274.  
  275. typedef
  276. int
  277. (WSPAPI * LPWSPRECV)(
  278.     SOCKET s,
  279.     LPWSABUF lpBuffers,
  280.     DWORD dwBufferCount,
  281.     LPDWORD lpNumberOfBytesRecvd,
  282.     LPDWORD lpFlags,
  283.     LPWSAOVERLAPPED lpOverlapped,
  284.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  285.     LPWSATHREADID lpThreadId,
  286.     LPINT lpErrno
  287.     );
  288.  
  289. typedef
  290. int
  291. (WSPAPI * LPWSPRECVDISCONNECT)(
  292.     SOCKET s,
  293.     LPWSABUF lpInboundDisconnectData,
  294.     LPINT lpErrno
  295.     );
  296.  
  297. typedef
  298. int
  299. (WSPAPI * LPWSPRECVFROM)(
  300.     SOCKET s,
  301.     LPWSABUF lpBuffers,
  302.     DWORD dwBufferCount,
  303.     LPDWORD lpNumberOfBytesRecvd,
  304.     LPDWORD lpFlags,
  305.     struct sockaddr FAR * lpFrom,
  306.     LPINT lpFromlen,
  307.     LPWSAOVERLAPPED lpOverlapped,
  308.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  309.     LPWSATHREADID lpThreadId,
  310.     LPINT lpErrno
  311.     );
  312.  
  313. typedef
  314. int
  315. (WSPAPI * LPWSPSELECT)(
  316.     int nfds,
  317.     fd_set FAR * readfds,
  318.     fd_set FAR * writefds,
  319.     fd_set FAR * exceptfds,
  320.     const struct timeval FAR * timeout,
  321.     LPINT lpErrno
  322.     );
  323.  
  324. typedef
  325. int
  326. (WSPAPI * LPWSPSEND)(
  327.     SOCKET s,
  328.     LPWSABUF lpBuffers,
  329.     DWORD dwBufferCount,
  330.     LPDWORD lpNumberOfBytesSent,
  331.     DWORD dwFlags,
  332.     LPWSAOVERLAPPED lpOverlapped,
  333.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  334.     LPWSATHREADID lpThreadId,
  335.     LPINT lpErrno
  336.     );
  337.  
  338. typedef
  339. int
  340. (WSPAPI * LPWSPSENDDISCONNECT)(
  341.     SOCKET s,
  342.     LPWSABUF lpOutboundDisconnectData,
  343.     LPINT lpErrno
  344.     );
  345.  
  346. typedef
  347. int
  348. (WSPAPI * LPWSPSENDTO)(
  349.     SOCKET s,
  350.     LPWSABUF lpBuffers,
  351.     DWORD dwBufferCount,
  352.     LPDWORD lpNumberOfBytesSent,
  353.     DWORD dwFlags,
  354.     const struct sockaddr FAR * lpTo,
  355.     int iTolen,
  356.     LPWSAOVERLAPPED lpOverlapped,
  357.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  358.     LPWSATHREADID lpThreadId,
  359.     LPINT lpErrno
  360.     );
  361.  
  362. typedef
  363. int
  364. (WSPAPI * LPWSPSETSOCKOPT)(
  365.     SOCKET s,
  366.     int level,
  367.     int optname,
  368.     const char FAR * optval,
  369.     int optlen,
  370.     LPINT lpErrno
  371.     );
  372.  
  373. typedef
  374. int
  375. (WSPAPI * LPWSPSHUTDOWN)(
  376.     SOCKET s,
  377.     int how,
  378.     LPINT lpErrno
  379.     );
  380.  
  381. typedef
  382. SOCKET
  383. (WSPAPI * LPWSPSOCKET)(
  384.     int af,
  385.     int type,
  386.     int protocol,
  387.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  388.     GROUP g,
  389.     DWORD dwFlags,
  390.     LPINT lpErrno
  391.     );
  392.  
  393. typedef
  394. INT
  395. (WSPAPI * LPWSPSTRINGTOADDRESS)(
  396.     LPWSTR AddressString,
  397.     INT AddressFamily,
  398.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  399.     LPSOCKADDR lpAddress,
  400.     LPINT lpAddressLength,
  401.     LPINT lpErrno
  402.     );
  403.  
  404. /*
  405.  * A service provider proc table. This structure is returned by value
  406.  * from the service provider's WSPStartup() entrypoint.
  407.  */
  408.  
  409. typedef struct _WSPPROC_TABLE {
  410.  
  411.     LPWSPACCEPT              lpWSPAccept;
  412.     LPWSPADDRESSTOSTRING     lpWSPAddressToString;
  413.     LPWSPASYNCSELECT         lpWSPAsyncSelect;
  414.     LPWSPBIND                lpWSPBind;
  415.     LPWSPCANCELBLOCKINGCALL  lpWSPCancelBlockingCall;
  416.     LPWSPCLEANUP             lpWSPCleanup;
  417.     LPWSPCLOSESOCKET         lpWSPCloseSocket;
  418.     LPWSPCONNECT             lpWSPConnect;
  419.     LPWSPDUPLICATESOCKET     lpWSPDuplicateSocket;
  420.     LPWSPENUMNETWORKEVENTS   lpWSPEnumNetworkEvents;
  421.     LPWSPEVENTSELECT         lpWSPEventSelect;
  422.     LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
  423.     LPWSPGETPEERNAME         lpWSPGetPeerName;
  424.     LPWSPGETSOCKNAME         lpWSPGetSockName;
  425.     LPWSPGETSOCKOPT          lpWSPGetSockOpt;
  426.     LPWSPGETQOSBYNAME        lpWSPGetQOSByName;
  427.     LPWSPIOCTL               lpWSPIoctl;
  428.     LPWSPJOINLEAF            lpWSPJoinLeaf;
  429.     LPWSPLISTEN              lpWSPListen;
  430.     LPWSPRECV                lpWSPRecv;
  431.     LPWSPRECVDISCONNECT      lpWSPRecvDisconnect;
  432.     LPWSPRECVFROM            lpWSPRecvFrom;
  433.     LPWSPSELECT              lpWSPSelect;
  434.     LPWSPSEND                lpWSPSend;
  435.     LPWSPSENDDISCONNECT      lpWSPSendDisconnect;
  436.     LPWSPSENDTO              lpWSPSendTo;
  437.     LPWSPSETSOCKOPT          lpWSPSetSockOpt;
  438.     LPWSPSHUTDOWN            lpWSPShutdown;
  439.     LPWSPSOCKET              lpWSPSocket;
  440.     LPWSPSTRINGTOADDRESS     lpWSPStringToAddress;
  441.  
  442. } WSPPROC_TABLE, FAR * LPWSPPROC_TABLE;
  443.  
  444. /*
  445.  * Pointers to the individual entries in the upcall table.
  446.  */
  447.  
  448. typedef
  449. BOOL
  450. (WSPAPI * LPWPUCLOSEEVENT)(
  451.     WSAEVENT hEvent,
  452.     LPINT lpErrno
  453.     );
  454.  
  455. typedef
  456. int
  457. (WSPAPI * LPWPUCLOSESOCKETHANDLE)(
  458.     SOCKET s,
  459.     LPINT lpErrno
  460.     );
  461.  
  462. typedef
  463. WSAEVENT
  464. (WSPAPI * LPWPUCREATEEVENT)(
  465.     LPINT lpErrno
  466.     );
  467.  
  468. typedef
  469. SOCKET
  470. (WSPAPI * LPWPUCREATESOCKETHANDLE)(
  471.     DWORD dwCatalogEntryId,
  472.     DWORD dwContext,
  473.     LPINT lpErrno
  474.     );
  475.  
  476. typedef
  477. int
  478. (WSPAPI * LPWPUFDISSET)(
  479.     SOCKET s,
  480.     fd_set FAR * set
  481.     );
  482.  
  483. typedef
  484. int
  485. (WSPAPI * LPWPUGETPROVIDERPATH)(
  486.     LPGUID lpProviderId,
  487.     WCHAR FAR * lpszProviderDllPath,
  488.     LPINT lpProviderDllPathLen,
  489.     LPINT lpErrno
  490.     );
  491.  
  492. typedef
  493. SOCKET
  494. (WSPAPI * LPWPUMODIFYIFSHANDLE)(
  495.     DWORD dwCatalogEntryId,
  496.     SOCKET ProposedHandle,
  497.     LPINT lpErrno
  498.     );
  499.  
  500. typedef
  501. BOOL
  502. (WSPAPI * LPWPUPOSTMESSAGE)(
  503.     HWND hWnd,
  504.     UINT Msg,
  505.     WPARAM wParam,
  506.     LPARAM lParam
  507.     );
  508.  
  509. typedef
  510. int
  511. (WSPAPI * LPWPUQUERYBLOCKINGCALLBACK)(
  512.     DWORD dwCatalogEntryId,
  513.     LPBLOCKINGCALLBACK FAR * lplpfnCallback,
  514.     LPDWORD lpdwContext,
  515.     LPINT lpErrno
  516.     );
  517.  
  518. typedef
  519. int
  520. (WSPAPI * LPWPUQUERYSOCKETHANDLECONTEXT)(
  521.     SOCKET s,
  522.     LPDWORD lpContext,
  523.     LPINT lpErrno
  524.     );
  525.  
  526. typedef
  527. int
  528. (WSPAPI * LPWPUQUEUEAPC)(
  529.     LPWSATHREADID lpThreadId,
  530.     LPWSAUSERAPC lpfnUserApc,
  531.     DWORD dwContext,
  532.     LPINT lpErrno
  533.     );
  534.  
  535. typedef
  536. BOOL
  537. (WSPAPI * LPWPURESETEVENT)(
  538.     WSAEVENT hEvent,
  539.     LPINT lpErrno
  540.     );
  541.  
  542. typedef
  543. BOOL
  544. (WSPAPI * LPWPUSETEVENT)(
  545.     WSAEVENT hEvent,
  546.     LPINT lpErrno
  547.     );
  548.  
  549. typedef
  550. int
  551. (WSPAPI * LPWPUOPENCURRENTTHREAD)(
  552.     LPWSATHREADID lpThreadId,
  553.     LPINT lpErrno
  554.     );
  555.  
  556. typedef
  557. int
  558. (WSPAPI * LPWPUCLOSETHREAD)(
  559.     LPWSATHREADID lpThreadId,
  560.     LPINT lpErrno
  561.     );
  562.  
  563. /*
  564.  * The upcall table. This structure is passed by value to the service
  565.  * provider's WSPStartup() entrypoint.
  566.  */
  567.  
  568. typedef struct _WSPUPCALLTABLE {
  569.  
  570.     LPWPUCLOSEEVENT               lpWPUCloseEvent;
  571.     LPWPUCLOSESOCKETHANDLE        lpWPUCloseSocketHandle;
  572.     LPWPUCREATEEVENT              lpWPUCreateEvent;
  573.     LPWPUCREATESOCKETHANDLE       lpWPUCreateSocketHandle;
  574.     LPWPUFDISSET                  lpWPUFDIsSet;
  575.     LPWPUGETPROVIDERPATH          lpWPUGetProviderPath;
  576.     LPWPUMODIFYIFSHANDLE          lpWPUModifyIFSHandle;
  577.     LPWPUPOSTMESSAGE              lpWPUPostMessage;
  578.     LPWPUQUERYBLOCKINGCALLBACK    lpWPUQueryBlockingCallback;
  579.     LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
  580.     LPWPUQUEUEAPC                 lpWPUQueueApc;
  581.     LPWPURESETEVENT               lpWPUResetEvent;
  582.     LPWPUSETEVENT                 lpWPUSetEvent;
  583.     LPWPUOPENCURRENTTHREAD        lpWPUOpenCurrentThread;
  584.     LPWPUCLOSETHREAD              lpWPUCloseThread;
  585.  
  586. } WSPUPCALLTABLE, FAR * LPWSPUPCALLTABLE;
  587.  
  588. /*
  589.  *  WinSock 2 SPI socket function prototypes
  590.  */
  591.  
  592. int
  593. WSPAPI
  594. WSPStartup(
  595.     WORD wVersionRequested,
  596.     LPWSPDATA lpWSPData,
  597.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  598.     WSPUPCALLTABLE UpcallTable,
  599.     LPWSPPROC_TABLE lpProcTable
  600.     );
  601.  
  602. typedef
  603. int
  604. (WSPAPI * LPWSPSTARTUP)(
  605.     WORD wVersionRequested,
  606.     LPWSPDATA lpWSPData,
  607.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  608.     WSPUPCALLTABLE UpcallTable,
  609.     LPWSPPROC_TABLE lpProcTable
  610.     );
  611.  
  612. /*
  613.  * Installation and configuration entrypoints.
  614.  */
  615.  
  616. int
  617. WSPAPI
  618. WSCEnumProtocols(
  619.     LPINT lpiProtocols,
  620.     LPWSAPROTOCOL_INFOW lpProtocolBuffer,
  621.     LPDWORD lpdwBufferLength,
  622.     LPINT lpErrno
  623.     );
  624.  
  625. typedef
  626. int
  627. (WSPAPI * LPWSCENUMPROTOCOLS)(
  628.     LPINT lpiProtocols,
  629.     LPWSAPROTOCOL_INFOW lpProtocolBuffer,
  630.     LPDWORD lpdwBufferLength,
  631.     LPINT lpErrno
  632.     );
  633.  
  634. int
  635. WSPAPI
  636. WSCDeinstallProvider(
  637.     LPGUID lpProviderId,
  638.     LPINT lpErrno
  639.     );
  640.  
  641. typedef
  642. int
  643. (WSPAPI * LPWSCDEINSTALLPROVIDER)(
  644.     LPGUID lpProviderId,
  645.     LPINT lpErrno
  646.     );
  647.  
  648. int
  649. WSPAPI
  650. WSCInstallProvider(
  651.     LPGUID lpProviderId,
  652.     const WCHAR FAR * lpszProviderDllPath,
  653.     const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
  654.     DWORD dwNumberOfEntries,
  655.     LPINT lpErrno
  656.     );
  657.  
  658. typedef
  659. int
  660. (WSPAPI * LPWSCINSTALLPROVIDER)(
  661.     LPGUID lpProviderId,
  662.     const WCHAR FAR * lpszProviderDllPath,
  663.     const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
  664.     DWORD dwNumberOfEntries,
  665.     LPINT lpErrno
  666.     );
  667.  
  668. int
  669. WSPAPI
  670. WSCGetProviderPath(
  671.     LPGUID lpProviderId,
  672.     WCHAR FAR * lpszProviderDllPath,
  673.     LPINT lpProviderDllPathLen,
  674.     LPINT lpErrno
  675.     );
  676.  
  677. typedef
  678. int
  679. (WSPAPI * LPWSCGETPROVIDERPATH)(
  680.     LPGUID lpProviderId,
  681.     WCHAR FAR * lpszProviderDllPath,
  682.     LPINT lpProviderDllPathLen,
  683.     LPINT lpErrno
  684.     );
  685.  
  686. /*
  687.  *  The following upcall function prototypes are only used by WinSock 2 DLL and
  688.  *  should not be used by any service providers.
  689.  */
  690.  
  691. BOOL
  692. WSPAPI
  693. WPUCloseEvent(
  694.     WSAEVENT hEvent,
  695.     LPINT lpErrno
  696.     );
  697.  
  698. int
  699. WSPAPI
  700. WPUCloseSocketHandle(
  701.     SOCKET s,
  702.     LPINT lpErrno
  703.     );
  704.  
  705. WSAEVENT
  706. WSPAPI
  707. WPUCreateEvent(
  708.     LPINT lpErrno
  709.     );
  710.  
  711. SOCKET
  712. WSPAPI
  713. WPUCreateSocketHandle(
  714.     DWORD dwCatalogEntryId,
  715.     DWORD dwContext,
  716.     LPINT lpErrno
  717.     );
  718.  
  719. int
  720. WSPAPI
  721. WPUFDIsSet(
  722.     SOCKET s,
  723.     fd_set FAR * set
  724.     );
  725.  
  726. int
  727. WSPAPI
  728. WPUGetProviderPath(
  729.     LPGUID lpProviderId,
  730.     WCHAR FAR * lpszProviderDllPath,
  731.     LPINT lpProviderDllPathLen,
  732.     LPINT lpErrno
  733.     );
  734.  
  735. SOCKET
  736. WSPAPI
  737. WPUModifyIFSHandle(
  738.     DWORD dwCatalogEntryId,
  739.     SOCKET ProposedHandle,
  740.     LPINT lpErrno
  741.     );
  742.  
  743. BOOL
  744. WSPAPI
  745. WPUPostMessage(
  746.     HWND hWnd,
  747.     UINT Msg,
  748.     WPARAM wParam,
  749.     LPARAM lParam
  750.     );
  751.  
  752. int
  753. WSPAPI
  754. WPUQueryBlockingCallback(
  755.     DWORD dwCatalogEntryId,
  756.     LPBLOCKINGCALLBACK FAR * lplpfnCallback,
  757.     LPDWORD lpdwContext,
  758.     LPINT lpErrno
  759.     );
  760.  
  761. int
  762. WSPAPI
  763. WPUQuerySocketHandleContext(
  764.     SOCKET s,
  765.     LPDWORD lpContext,
  766.     LPINT lpErrno
  767.     );
  768.  
  769. int
  770. WSPAPI
  771. WPUQueueApc(
  772.     LPWSATHREADID lpThreadId,
  773.     LPWSAUSERAPC lpfnUserApc,
  774.     DWORD dwContext,
  775.     LPINT lpErrno
  776.     );
  777.  
  778. BOOL
  779. WSPAPI
  780. WPUResetEvent(
  781.     WSAEVENT hEvent,
  782.     LPINT lpErrno
  783.     );
  784.  
  785. BOOL
  786. WSPAPI
  787. WPUSetEvent(
  788.     WSAEVENT hEvent,
  789.     LPINT lpErrno
  790.     );
  791.  
  792. /*
  793.  * Installing and uninstalling name space providers.
  794.  */
  795.  
  796. INT
  797. WSPAPI
  798. WSCInstallNameSpace (
  799.     LPWSTR lpszIdentifier,
  800.     LPWSTR lpszPathName,
  801.     DWORD dwNameSpace,
  802.     DWORD dwVersion,
  803.     LPGUID lpProviderId
  804.     );
  805.  
  806. typedef
  807. INT
  808. (WSPAPI * LPWSCINSTALLNAMESPACE)(
  809.     LPWSTR lpszIdentifier,
  810.     LPWSTR lpszPathName,
  811.     DWORD dwNameSpace,
  812.     DWORD dwVersion,
  813.     LPGUID lpProviderId
  814.     );
  815.  
  816. INT
  817. WSPAPI
  818. WSCUnInstallNameSpace (
  819.     LPGUID lpProviderId
  820.     );
  821.  
  822. typedef
  823. INT
  824. (WSPAPI * LPWSCUNINSTALLNAMESPACE)(
  825.     LPGUID lpProviderId
  826.     );
  827.  
  828. INT
  829. WSPAPI
  830. WSCEnableNSProvider (
  831.     LPGUID lpProviderId,
  832.     BOOL fEnable
  833.     );
  834.  
  835. typedef
  836. INT
  837. (WSPAPI * LPWSCENABLENSPROVIDER)(
  838.     LPGUID lpProviderId,
  839.     BOOL fEnable
  840.     );
  841.  
  842. /*
  843.  * Pointers to the individual entries in the namespace proc table.
  844.  */
  845.  
  846. typedef
  847. INT
  848. (WSAAPI * LPNSPCLEANUP)(
  849.     LPGUID lpProviderId
  850.     );
  851.  
  852. typedef
  853. INT
  854. (WSAAPI * LPNSPLOOKUPSERVICEBEGIN)(
  855.     LPGUID lpProviderId,
  856.     LPWSAQUERYSETW lpqsRestrictions,
  857.     LPWSASERVICECLASSINFOW lpServiceClassInfo,
  858.     DWORD dwControlFlags,
  859.     LPHANDLE lphLookup
  860.     );
  861.  
  862. typedef
  863. INT
  864. (WSAAPI * LPNSPLOOKUPSERVICENEXT)(
  865.     HANDLE hLookup,
  866.     DWORD dwControlFlags,
  867.     LPDWORD lpdwBufferLength,
  868.     LPWSAQUERYSETW lpqsResults
  869.     );
  870.  
  871. typedef
  872. INT
  873. (WSAAPI * LPNSPLOOKUPSERVICEEND)(
  874.     HANDLE hLookup
  875.     );
  876.  
  877. typedef
  878. INT
  879. (WSAAPI * LPNSPSETSERVICE)(
  880.     LPGUID lpProviderId,
  881.     LPWSASERVICECLASSINFOW lpServiceClassInfo,
  882.     LPWSAQUERYSETW lpqsRegInfo,
  883.     WSAESETSERVICEOP essOperation,
  884.     DWORD dwControlFlags
  885.     );
  886.  
  887. typedef
  888. INT
  889. (WSAAPI * LPNSPINSTALLSERVICECLASS)(
  890.     LPGUID lpProviderId,
  891.     LPWSASERVICECLASSINFOW lpServiceClassInfo
  892.     );
  893.  
  894. typedef
  895. INT
  896. (WSAAPI * LPNSPREMOVESERVICECLASS)(
  897.     LPGUID lpProviderId,
  898.     LPGUID lpServiceClassId
  899.     );
  900.  
  901. typedef
  902. INT
  903. (WSAAPI * LPNSPGETSERVICECLASSINFO)(
  904.     LPGUID lpProviderId,
  905.     LPDWORD lpdwBufSize,
  906.     LPWSASERVICECLASSINFOW lpServiceClassInfo
  907.     );
  908.  
  909. /*
  910.  * The name space service provider procedure table.
  911.  */
  912.  
  913. typedef struct _NSP_ROUTINE {
  914.  
  915.     /* Structure version information: */
  916.     DWORD           cbSize;
  917.     DWORD           dwMajorVersion;
  918.     DWORD           dwMinorVersion;
  919.  
  920.     /* Procedure-pointer table: */
  921.  
  922.     LPNSPCLEANUP             NSPCleanup;
  923.     LPNSPLOOKUPSERVICEBEGIN  NSPLookupServiceBegin;
  924.     LPNSPLOOKUPSERVICENEXT   NSPLookupServiceNext;
  925.     LPNSPLOOKUPSERVICEEND    NSPLookupServiceEnd;
  926.     LPNSPSETSERVICE          NSPSetService;
  927.     LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
  928.     LPNSPREMOVESERVICECLASS  NSPRemoveServiceClass;
  929.     LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
  930.  
  931. } NSP_ROUTINE, FAR * LPNSP_ROUTINE;
  932.  
  933. /*
  934.  * Startup procedures.
  935.  */
  936.  
  937. INT
  938. WSAAPI
  939. NSPStartup(
  940.     LPGUID lpProviderId,
  941.     LPNSP_ROUTINE lpnspRoutines
  942.     );
  943.  
  944. typedef
  945. INT
  946. (WSAAPI * LPNSPSTARTUP)(
  947.     LPGUID lpProviderId,
  948.     LPNSP_ROUTINE lpnspRoutines
  949.     );
  950.  
  951.  
  952. #ifdef __cplusplus
  953. }
  954. #endif
  955.  
  956.  
  957.  
  958. #include <poppack.h>
  959.  
  960.  
  961.  
  962. #pragma option pop
  963. #endif  /* _WINSOCK2SPI_ */
  964.